import cv2
import pyautogui
import numpy as np

# 设置屏幕分辨率，这里使用当前屏幕的分辨率
SCREEN_SIZE = (pyautogui.size()[0], pyautogui.size()[1])
# 定义视频编解码器，这里使用MJPG
fourcc = cv2.VideoWriter_fourcc(*'MJPG')
# 创建一个VideoWriter对象，用于将帧写入视频文件
out = cv2.VideoWriter('output.avi', fourcc, 20.0, SCREEN_SIZE)
try:
    while True:
        # 捕获屏幕图像
        img = pyautogui.screenshot()
        # 将图像转换为numpy数组格式，以适应OpenCV的要求
        frame = np.array(img)
        # 将BGR格式转换为RGB格式（因为OpenCV默认使用BGR格式）
        frame = cv2.cvtColor(frame, cv2.COLOR_BGR2RGB)
        # 将帧写入视频文件
        out.write(frame)
except KeyboardInterrupt:
    # 当用户按下Ctrl + C时，释放VideoWriter对象并关闭所有窗口
    out.release()
    cv2.destroyAllWindows()